In software, a fragile binary interface problem (also known as a fragile base class problem) may be present when internal changes to an underlying class library cause descendant libraries or programs to stop working properly. The problem may occur when a compiler for an object-oriented language generates code that accesses fields of an object using offsets from the starting point of the object to the field in question. If the author of a library changes the size or layout of public fields within an object, the offsets may change, and then software that relies on the former offsets becomes unreliable.
More generally, software sometimes exhibits brittleness as time passes and changes occur in the software and/or its environment. That is, an apparently small change to a component, to runtime support, or to input data may lead to a large reduction in software reliability. Software brittleness may be caused by a wide variety of factors, and proposed solutions to brittleness also vary widely. Moreover, attempts to reduce brittleness may conflict with other efforts, such as efforts to make a particular piece of software faster, more efficient in its use of hardware, more compact, easier to modify, and/or easier to debug.